<?
/**
 * This file is part of XNAT light.
 *
 * XNAT light is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * XNAT light is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with XNAT light.  If not, see <http://www.gnu.org/licenses/>.
 */
namespace NRG\Framework\Common;

/**
 * Logging facility
 *
 * @package NRG\Framework\Common
 */
class Logger
{
    /**
     * Singleton
     *
     * @var Logger
     */
    protected static $_instance;

    /**
     * Get Logger instance
     *
     * @return Logger
     */
    public static function getInstance()
    {
	if(Logger::$_instance === null)
	    Logger::$_instance = new Logger();

	return Logger::$_instance;
    }

    /**
     * Log fatal message and exit program.
     *
     * @param string|Exception $e
     */
    public function fatal($e=null)
    {
	if(is_string($e))
	    $message .= $e;
	else if('Exception' == @get_parent_class($e) || 'Exception' == @get_class($e))
	    $message .= $e->getMessage();

	echo json_encode(array("error" => $message));

	exit(1);
    }

    /**
     * Log error message
     *
     * @param string|Exception $e
     */
    public function error($e=null)
    {
	if(is_string($e))
	    $message .= $e;
	else if('Exception' == @get_parent_class($e) || 'Exception' == @get_class($e))
	    $message .= $e->getMessage();

	echo json_encode(array("error" => $message));
    }

    /**
     * Print a result message to the screen in <result/>
     * 
     * @param string $message
     */
    public function result($message=null)
    {
	echo json_encode(array("result" => $message));
    }
}